#include "ArchivoComprimido.h"

ArchivoComprimido::ArchivoComprimido(const char* filename):Archivo(filename) {
    this->filename = filename;
}

/*Devuelvo la posicion en donde escribi*/
int ArchivoComprimido::addGammaCode(unsigned int code) {
    int pos=this->tellp();
    Codificador::codificarGamma(code,this,b);
    return pos;
}

int ArchivoComprimido::getGammaCode() {
    return Codificador::decodificarGamma(this,b);
}

/*Devuelvo la posicion en donde escribi*/
int ArchivoComprimido::addDeltaCode(unsigned int code) {
    int pos=this->tellp();
    Codificador::codificarDelta(code,this,b);
    return pos;
}

int ArchivoComprimido::getDeltaCode() {
    return Codificador::decodificarDelta(this,b);
}

int ArchivoComprimido::rellenarBuffer(){
    this->b.rellenarBuffer(this);
    return tellp();
}

void ArchivoComprimido::destroy() {
    this->close();
    remove(this->filename);
}

ArchivoComprimido::~ArchivoComprimido() {
    this->close();
}

/*
***************Ejemplo de uso*********************

ArchivoComprimido* e=new ArchivoComprimido("/home/federicojfarina/WorkSpace/gamma/Prueba.txt");
e->seekg(0,ios::beg);
e->addCode(100);
e->addCode(200);
e->rellenarBuffer();
e->seekg(0,ios::beg);
int codigo;

codigo=e->getCode();
cout<<"Codigo: "<<codigo<<endl;
codigo=e->getCode();
cout<<"Codigo: "<<codigo<<endl;
delete(e);
*/

